/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package logica;

import fisica.BalanceHidroelectroliticoFisica;
import fisica.CapaFisica;
import hibernate.objeto.BalanceHidroelectrolitico;
import hibernate.objeto.EgresoBalanceHidroelectrolitico;
import hibernate.objeto.IngresoBalanceHidroelectrolitico;
import java.util.Vector;

/**
 *
 * @author Gonzalo
 */
public class BalanceHidroelectroliticoLogica {

     /**
     * Agrega el objeto BalanceHidroelectrolitico en la base de datos.
     *
     * @param datosIngresoOEgresoBalanceHidroelectrolitico
     * Los datos de los ingresos o egresos involucrados a agregar
     * @param balanceHidroelectrolitico El objeto BalanceHidroelectrolitico a
     * agregar
     * @param idBalanceHidroelectrolitico El id del objeto
     * creado para su posterior recuperación
     *
     * @return true si se agregó correctamente, false en caso contrario
     */
    public static boolean agregarBalanceHidroelectrolitico(
            Object[][] datosIngresoOEgresoBalanceHidroelectrolitico,
            BalanceHidroelectrolitico balanceHidroelectrolitico,
            int[] idBalanceHidroelectrolitico) {

        int cantidadObjetosDeterminacionesACrear =
                datosIngresoOEgresoBalanceHidroelectrolitico.length;


        //Persiste el objeto
        if (CapaFisica.guardarOActualizarObjeto(balanceHidroelectrolitico)) {
            idBalanceHidroelectrolitico[0] = balanceHidroelectrolitico
                    .getIdBalanceHidroelectrolitico();
            for (int i = 0; i < cantidadObjetosDeterminacionesACrear; i++) {
                //Vinculo el objeto
                if (datosIngresoOEgresoBalanceHidroelectrolitico[i][
                        CapaLogica.
                        TRATAMIENTO_Y_PRACTICA_CUIDADOS_DE_INTERNACION_BALANCE_HIDROELECTROLITICO_INGRESO_O_EGRESO_DISPOSICION_CANTIDAD]
                        == null) { //Se genera un ingreso
                    IngresoBalanceHidroelectroliticoLogica.
                            agregarIngresoBalanceHidroelectrolitico(
                            datosIngresoOEgresoBalanceHidroelectrolitico[i],
                            balanceHidroelectrolitico);
                } else { //Se genera un egreso
                    EgresoBalanceHidroelectroliticoLogica.
                            agregarEgresoBalanceHidroelectrolitico(
                            datosIngresoOEgresoBalanceHidroelectrolitico[i],
                            balanceHidroelectrolitico);
                }                
            }
            return true;
        } else {
            return false;
        }

    }


    /**
     * Retorna el objeto BalanceHidroelectrolitico según el id.
     *
     * @param idBalanceHidroelectrolitico  El id del BalanceHidroelectrolitico
     * @return El objeto TratamientoQuirurgico consultado, null si no existe
     */
    public static BalanceHidroelectrolitico getBalanceHidroelectroliticoPorId(
            int idBalanceHidroelectrolitico) {
        return BalanceHidroelectroliticoFisica.getBalanceHidroelectroliticoPorId(
                idBalanceHidroelectrolitico);
    }
    
    /**
     * Retorna todo el objeto BalanceHidroelectrolitico en string.
     *
     * @param balanceHidroelectrolitico El objeto a escribir
     */
    public static String getBalanceHidroelectroliticoString(BalanceHidroelectrolitico balanceHidroelectrolitico) {
        String balanceHidroelectroliticoString =
                "idBalanceHidroelectrolitico: " +
                balanceHidroelectrolitico.getIdBalanceHidroelectrolitico() + "\n";

        Vector<IngresoBalanceHidroelectrolitico>
                vectorIngresoBalanceHidroelectrolitico =
                IngresoBalanceHidroelectroliticoLogica.
                getVectorIngresoBalanceHidroelectroliticoPorIdBalanceHidroelectrolitico(
                balanceHidroelectrolitico.getIdBalanceHidroelectrolitico());
            if (vectorIngresoBalanceHidroelectrolitico != null) {
                for (int i = 0; i < vectorIngresoBalanceHidroelectrolitico.size(); i++) {
                    balanceHidroelectroliticoString += IngresoBalanceHidroelectroliticoLogica.
                    getIngresoBalanceHidroelectroliticoString(
                    vectorIngresoBalanceHidroelectrolitico.get(i));
            }
                
        }

        Vector<EgresoBalanceHidroelectrolitico>
                vectorEgresoBalanceHidroelectrolitico =
                EgresoBalanceHidroelectroliticoLogica.
                getVectorEgresoBalanceHidroelectroliticoPorIdBalanceHidroelectrolitico(
                balanceHidroelectrolitico.getIdBalanceHidroelectrolitico());
            if (vectorEgresoBalanceHidroelectrolitico != null) {
                for (int i = 0; i < vectorEgresoBalanceHidroelectrolitico.size(); i++) {
                    balanceHidroelectroliticoString += EgresoBalanceHidroelectroliticoLogica.
                    getEgresoBalanceHidroelectroliticoString(
                    vectorEgresoBalanceHidroelectrolitico.get(i));
            }

        }

        return balanceHidroelectroliticoString;
    }

    /**
     * Retorna todo el objeto BalanceHidroelectrolitico en HTML.
     *
     * @param balanceHidroelectrolitico El objeto a escribir
     */
    public static String getBalanceHidroelectroliticoHTML(BalanceHidroelectrolitico balanceHidroelectrolitico) {
        String balanceHidroelectroliticoHTML = "";
        String ingresoBalanceHidroelectroliticoHTML = "";
        String egresoBalanceHidroelectroliticoHTML = "";

        if (balanceHidroelectrolitico != null) {

           Vector<IngresoBalanceHidroelectrolitico>
                vectorIngresoBalanceHidroelectrolitico =
                IngresoBalanceHidroelectroliticoLogica.
                getVectorIngresoBalanceHidroelectroliticoPorIdBalanceHidroelectrolitico(
                balanceHidroelectrolitico.getIdBalanceHidroelectrolitico());
            if (vectorIngresoBalanceHidroelectrolitico != null) {
                for (int i = 0; i < vectorIngresoBalanceHidroelectrolitico.size(); i++) {
                    ingresoBalanceHidroelectroliticoHTML += "</font><br><br><hr /><hr /><br>";
                    ingresoBalanceHidroelectroliticoHTML += IngresoBalanceHidroelectroliticoLogica.
                    getIngresoBalanceHidroelectroliticoHTML(
                    vectorIngresoBalanceHidroelectrolitico.get(i));
            }

        }

        Vector<EgresoBalanceHidroelectrolitico>
                vectorEgresoBalanceHidroelectrolitico =
                EgresoBalanceHidroelectroliticoLogica.
                getVectorEgresoBalanceHidroelectroliticoPorIdBalanceHidroelectrolitico(
                balanceHidroelectrolitico.getIdBalanceHidroelectrolitico());
            if (vectorEgresoBalanceHidroelectrolitico != null) {
                for (int i = 0; i < vectorEgresoBalanceHidroelectrolitico.size(); i++) {
                    egresoBalanceHidroelectroliticoHTML += "</font><br><br><hr /><hr /><br>";
                    egresoBalanceHidroelectroliticoHTML += EgresoBalanceHidroelectroliticoLogica.
                    getEgresoBalanceHidroelectroliticoHTML(
                    vectorEgresoBalanceHidroelectrolitico.get(i));
            }

        }

           balanceHidroelectroliticoHTML  =
                "<font size=\"3\" face=\"arial\" color=\"blue\">"
                    + "BALANCE HIDROELECTROLÍTICO</font><br><br><hr /><br>" +
                    ingresoBalanceHidroelectroliticoHTML +
                    egresoBalanceHidroelectroliticoHTML + "</font><br><br>";
        } else {
            balanceHidroelectroliticoHTML  = "<font size=\"3\" face=\"arial\" color=\"blue\">BALANCE HIDROELECTROLÍTICO</font><br><br> " +
                    "<hr /><font size=\"3\" face=\"arial\">No posee</font><br></font><hr />";
        }

        return balanceHidroelectroliticoHTML;
    }

}
